package com.eastfair.home.service;

import com.eastfair.boot.service.SuperService;
import com.eastfair.home.dto.ReportDrawingCategoryAuditDTO;
import com.eastfair.home.entity.ReportDrawingCategoryAudit;
import com.eastfair.home.vo.ReportDrawingCategoryAuditVO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 报馆图纸分类审核记录
 * </p>
 *
 * @author dq
 * @date 2022-08-08
 */
public interface ReportDrawingCategoryAuditService extends SuperService<ReportDrawingCategoryAudit> {

    /**
     * 报馆审核ID查询图纸分类审核列表VO.
     *
     * @param reportSpaceAuditId the report space id
     * @return the list
     */
    List<ReportDrawingCategoryAuditVO> listVOByReportSpaceAuditId(Long reportSpaceAuditId);

    /**
     * 报馆审核ID查询图纸分类审核列表.
     *
     * @param reportSpaceAuditId the report space audit id
     * @return the list
     */
    List<ReportDrawingCategoryAudit> listByReportSpaceAuditId(Long reportSpaceAuditId);

    /**
     * 报馆ID查询图纸分类审核VO列表.
     *
     * @param reportSpaceId the report space id
     * @return the list
     */
    List<ReportDrawingCategoryAuditVO> listVOByReportSpaceId(Long reportSpaceId);

    /**
     * 报馆ID查询图纸分类审核列表.
     *
     * @param reportSpaceId the report space id
     * @return the list
     */
    List<ReportDrawingCategoryAudit> listByReportSpaceId(Long reportSpaceId);

    /**
     * 批量ID查询图纸分类审核列表.
     *
     * @param ids the ids
     * @return the list
     */
    List<ReportDrawingCategoryAudit> listAuditByIds(List<Long> ids);


    /**
     * 查询报馆图纸分类审核列表.
     *
     * @param query the query
     * @return the list
     */
    List<ReportDrawingCategoryAudit> listReportDrawingCategoriesAudits(ReportDrawingCategoryAuditDTO query);

    /**
     * 报馆ID和图纸分类ID查询报馆图纸分类审核记录.
     *
     * @param reportSpaceId the report space id
     * @param drawingId     the drawing id
     * @return the by report space id and drawing id
     */
    ReportDrawingCategoryAudit getByReportSpaceIdAndDrawingId(Long reportSpaceId, Long drawingId);

    /**
     * 提交图纸分类审核列表.
     *
     * @param list               the list
     * @param reportSpaceAuditId the report space audit id
     * @return the boolean
     */
    boolean submitBatch(List<ReportDrawingCategoryAuditDTO> list, Long reportSpaceAuditId);

    /**
     * 重新提交审核未通过或待审核的图纸分类.
     *
     * @param list     the need submit list
     * @param existAuditList            the now list
     * @param reportSpaceAuditId the report space audit id
     * @param reportSpaceId      the report space id
     * @return the boolean
     */
    boolean resubmitBatch(List<ReportDrawingCategoryAuditDTO> list, List<ReportDrawingCategoryAudit> existAuditList, Long reportSpaceAuditId, Long reportSpaceId);

    /**
     * 重新保存图纸分类.
     *
     * @param list               the list
     * @param reportSpaceAuditId the report space audit id
     * @param reportSpaceId      the report space id
     * @return the boolean
     */
    boolean reSaveBatch(List<ReportDrawingCategoryAuditDTO> list, Long reportSpaceAuditId, Long reportSpaceId);

    /**
     * 保存报馆图纸分类审核.
     *
     * @param categoryDTO the category dto
     * @return the boolean
     */
    boolean saveReportDrawingCategoryAudit(ReportDrawingCategoryAuditDTO categoryDTO);

    /**
     * 批量保存图纸分类审核列表.
     *
     * @param list               the list
     * @param reportSpaceAuditId the report space id
     * @return the boolean
     */
    boolean saveBatch(List<ReportDrawingCategoryAuditDTO> list, Long reportSpaceAuditId);

    /**
     * 批量更新图纸分类审核列表.
     *
     * @param list               the list
     * @param reportSpaceAuditId the report space audit id
     * @return the boolean
     */
    @Deprecated
    boolean updateBatchByReportSpaceAuditId(List<ReportDrawingCategoryAuditDTO> list, Long reportSpaceAuditId);

    /**
     * 批量更新图纸分类审核状态.
     *
     * @param list the list
     * @return the boolean
     */
    boolean updateBatchAuditStatus(List<ReportDrawingCategoryAuditDTO> list);

    /**
     * 批量更新图纸分类场馆审核状态.
     *
     * @param reportDrawingCategoryAuditDTO the report drawing category audit dto
     * @return the boolean
     */
    boolean updateVenueAuditStatus(ReportDrawingCategoryAuditDTO reportDrawingCategoryAuditDTO);

    /**
     * 提交图纸审核的时候，更新场馆报馆状态.
     *
     * @param reportSpaceId                  the report space id
     * @return the boolean
     */
    @Deprecated
    boolean updateReportSpaceAuditStatusWhenSubmit(Long reportSpaceId);

    /**
     * 报馆审核ID批量删除报馆图纸分类审核.
     *
     * @param reportSpaceAuditId the report space audit id
     * @return the boolean
     */
    @Deprecated
    boolean removeBatchByReportSpaceAuditId(Long reportSpaceAuditId);

    /**
     * 报馆ID批量删除报馆图纸分类审核.
     *
     * @param reportSpaceId the report space id
     * @return the boolean
     */
    boolean removeBatchByReportSpaceId(Long reportSpaceId);

    /**
     * 报馆ID和图纸类型ID 批量删除图纸分类.
     *
     * @param reportSpaceId         the report space id
     * @param drawingCategoryIdList the drawing category id list
     * @return the boolean
     */
    boolean removeBatchByReportSpaceIdAndDrawingCategoryId(Long reportSpaceId, List<Long> drawingCategoryIdList);
}
